home *** CD-ROM | disk | FTP | other *** search
/ C++ für Kids / C++ for kids.iso / SETUP / US / CBUILDER / DATA.Z / D3DRMDEF.H < prev    next >
C/C++ Source or Header  |  1997-02-13  |  14KB  |  409 lines

  1. /*==========================================================================;
  2.  *
  3.  *  Copyright (C) 1995-1996 Microsoft Corporation.  All Rights Reserved.
  4.  *
  5.  *  File:       d3drm.h
  6.  *  Content:    Direct3DRM include file
  7.  *
  8.  ***************************************************************************/
  9.  
  10. #ifndef __D3DRMDEFS_H__
  11. #define __D3DRMDEFS_H__
  12. #pragma option -b
  13.  
  14. #pragma option -b.
  15. #include <stddef.h>
  16. #pragma option -b
  17. #pragma option -b.
  18. #include "d3dtypes.h"
  19. #pragma option -b
  20.  
  21. #ifdef WIN32
  22. #define D3DRMAPI  __stdcall
  23. #else
  24. #define D3DRMAPI
  25. #endif
  26.  
  27. #if defined(__cplusplus)
  28. extern "C" {
  29. #endif
  30.  
  31. #ifndef TRUE
  32. #define FALSE 0
  33. #define TRUE 1
  34. #endif
  35.  
  36. typedef struct _D3DRMVECTOR4D
  37. {   D3DVALUE x, y, z, w;
  38. } D3DRMVECTOR4D, *LPD3DRMVECTOR4D;
  39.  
  40. typedef D3DVALUE D3DRMMATRIX4D[4][4];
  41.  
  42. typedef struct _D3DRMQUATERNION
  43. {   D3DVALUE s;
  44.     D3DVECTOR v;
  45. } D3DRMQUATERNION, *LPD3DRMQUATERNION;
  46.  
  47. typedef struct _D3DRMBOX
  48. {   D3DVECTOR min, max;
  49. } D3DRMBOX, *LPD3DRMBOX;
  50.  
  51. typedef void (*D3DRMWRAPCALLBACK)
  52.     (LPD3DVECTOR, int* u, int* v, LPD3DVECTOR a, LPD3DVECTOR b, LPVOID);
  53.  
  54. typedef enum _D3DRMLIGHTTYPE
  55. {   D3DRMLIGHT_AMBIENT,
  56.     D3DRMLIGHT_POINT,
  57.     D3DRMLIGHT_SPOT,
  58.     D3DRMLIGHT_DIRECTIONAL,
  59.     D3DRMLIGHT_PARALLELPOINT
  60. } D3DRMLIGHTTYPE, *LPD3DRMLIGHTTYPE;
  61.  
  62. typedef enum _D3DRMSHADEMODE {
  63.     D3DRMSHADE_FLAT     = 0,
  64.     D3DRMSHADE_GOURAUD  = 1,
  65.     D3DRMSHADE_PHONG    = 2,
  66.  
  67.     D3DRMSHADE_MASK     = 7,
  68.     D3DRMSHADE_MAX      = 8
  69. } D3DRMSHADEMODE, *LPD3DRMSHADEMODE;
  70.  
  71. typedef enum _D3DRMLIGHTMODE {
  72.     D3DRMLIGHT_OFF      = 0 * D3DRMSHADE_MAX,
  73.     D3DRMLIGHT_ON       = 1 * D3DRMSHADE_MAX,
  74.  
  75.     D3DRMLIGHT_MASK     = 7 * D3DRMSHADE_MAX,
  76.     D3DRMLIGHT_MAX      = 8 * D3DRMSHADE_MAX
  77. } D3DRMLIGHTMODE, *LPD3DRMLIGHTMODE;
  78.  
  79. typedef enum _D3DRMFILLMODE {
  80.     D3DRMFILL_POINTS    = 0 * D3DRMLIGHT_MAX,
  81.     D3DRMFILL_WIREFRAME = 1 * D3DRMLIGHT_MAX,
  82.     D3DRMFILL_SOLID     = 2 * D3DRMLIGHT_MAX,
  83.  
  84.     D3DRMFILL_MASK      = 7 * D3DRMLIGHT_MAX,
  85.     D3DRMFILL_MAX       = 8 * D3DRMLIGHT_MAX
  86. } D3DRMFILLMODE, *LPD3DRMFILLMODE;
  87.  
  88. typedef DWORD D3DRMRENDERQUALITY, *LPD3DRMRENDERQUALITY;
  89.  
  90. #define D3DRMRENDER_WIREFRAME   (D3DRMSHADE_FLAT+D3DRMLIGHT_OFF+D3DRMFILL_WIREFRAME)
  91. #define D3DRMRENDER_UNLITFLAT   (D3DRMSHADE_FLAT+D3DRMLIGHT_OFF+D3DRMFILL_SOLID)
  92. #define D3DRMRENDER_FLAT        (D3DRMSHADE_FLAT+D3DRMLIGHT_ON+D3DRMFILL_SOLID)
  93. #define D3DRMRENDER_GOURAUD     (D3DRMSHADE_GOURAUD+D3DRMLIGHT_ON+D3DRMFILL_SOLID)
  94. #define D3DRMRENDER_PHONG       (D3DRMSHADE_PHONG+D3DRMLIGHT_ON+D3DRMFILL_SOLID)
  95.  
  96. typedef enum _D3DRMTEXTUREQUALITY
  97. {   D3DRMTEXTURE_NEAREST,               /* choose nearest texel */
  98.     D3DRMTEXTURE_LINEAR,                /* interpolate 4 texels */
  99.     D3DRMTEXTURE_MIPNEAREST,            /* nearest texel in nearest mipmap  */
  100.     D3DRMTEXTURE_MIPLINEAR,             /* interpolate 2 texels from 2 mipmaps */
  101.     D3DRMTEXTURE_LINEARMIPNEAREST,      /* interpolate 4 texels in nearest mipmap */
  102.     D3DRMTEXTURE_LINEARMIPLINEAR        /* interpolate 8 texels from 2 mipmaps */
  103. } D3DRMTEXTUREQUALITY, *LPD3DRMTEXTUREQUALITY;
  104.  
  105. typedef enum _D3DRMCOMBINETYPE
  106. {   D3DRMCOMBINE_REPLACE,
  107.     D3DRMCOMBINE_BEFORE,
  108.     D3DRMCOMBINE_AFTER
  109. } D3DRMCOMBINETYPE, *LPD3DRMCOMBINETYPE;
  110.  
  111. typedef D3DCOLORMODEL D3DRMCOLORMODEL, *LPD3DRMCOLORMODEL;
  112.  
  113. typedef enum _D3DRMPALETTEFLAGS
  114. {   D3DRMPALETTE_FREE,                  /* renderer may use this entry freely */
  115.     D3DRMPALETTE_READONLY,              /* fixed but may be used by renderer */
  116.     D3DRMPALETTE_RESERVED               /* may not be used by renderer */
  117. } D3DRMPALETTEFLAGS, *LPD3DRMPALETTEFLAGS;
  118.  
  119. typedef struct _D3DRMPALETTEENTRY
  120. {   unsigned char red;          /* 0 .. 255 */
  121.     unsigned char green;        /* 0 .. 255 */
  122.     unsigned char blue;         /* 0 .. 255 */
  123.     unsigned char flags;        /* one of D3DRMPALETTEFLAGS */
  124. } D3DRMPALETTEENTRY, *LPD3DRMPALETTEENTRY;
  125.  
  126. typedef struct _D3DRMIMAGE
  127. {   int width, height;          /* width and height in pixels */
  128.     int aspectx, aspecty;       /* aspect ratio for non-square pixels */
  129.     int depth;                  /* bits per pixel */
  130.     int rgb;                    /* if false, pixels are indices into a
  131.                                    palette otherwise, pixels encode
  132.                                    RGB values. */
  133.     int bytes_per_line;         /* number of bytes of memory for a
  134.                                    scanline. This must be a multiple
  135.                                    of 4. */
  136.     void* buffer1;              /* memory to render into (first buffer). */
  137.     void* buffer2;              /* second rendering buffer for double
  138.                                    buffering, set to NULL for single
  139.                                    buffering. */
  140.     unsigned long red_mask;
  141.     unsigned long green_mask;
  142.     unsigned long blue_mask;
  143.     unsigned long alpha_mask;   /* if rgb is true, these are masks for
  144.                                    the red, green and blue parts of a
  145.                                    pixel.  Otherwise, these are masks
  146.                                    for the significant bits of the
  147.                                    red, green and blue elements in the
  148.                                    palette.  For instance, most SVGA
  149.                                    displays use 64 intensities of red,
  150.                                    green and blue, so the masks should
  151.                                    all be set to 0xfc. */
  152.     int palette_size;           /* number of entries in palette */
  153.     D3DRMPALETTEENTRY* palette; /* description of the palette (only if
  154.                                    rgb is false).  Must be (1<<depth)
  155.                                    elements. */
  156. } D3DRMIMAGE, *LPD3DRMIMAGE;
  157.  
  158. typedef enum _D3DRMWRAPTYPE
  159. {   D3DRMWRAP_FLAT,
  160.     D3DRMWRAP_CYLINDER,
  161.     D3DRMWRAP_SPHERE,
  162.     D3DRMWRAP_CHROME
  163. } D3DRMWRAPTYPE, *LPD3DRMWRAPTYPE;
  164.  
  165. #define D3DRMWIREFRAME_CULL             1 /* cull backfaces */
  166. #define D3DRMWIREFRAME_HIDDENLINE       2 /* lines are obscured by closer objects */
  167.  
  168. typedef enum _D3DRMPROJECTIONTYPE
  169. {   D3DRMPROJECT_PERSPECTIVE,
  170.     D3DRMPROJECT_ORTHOGRAPHIC
  171. } D3DRMPROJECTIONTYPE, *LPD3DRMPROJECTIONTYPE;
  172.  
  173. typedef enum _D3DRMXOFFORMAT
  174. {   D3DRMXOF_BINARY,
  175.     D3DRMXOF_COMPRESSED,
  176.     D3DRMXOF_TEXT
  177. } D3DRMXOFFORMAT, *LPD3DRMXOFFORMAT;
  178.  
  179. typedef DWORD D3DRMSAVEOPTIONS;
  180. #define D3DRMXOFSAVE_NORMALS 1
  181. #define D3DRMXOFSAVE_TEXTURECOORDINATES 2
  182. #define D3DRMXOFSAVE_MATERIALS 4
  183. #define D3DRMXOFSAVE_TEXTURENAMES 8
  184. #define D3DRMXOFSAVE_ALL 15
  185.  
  186. typedef enum _D3DRMCOLORSOURCE
  187. {   D3DRMCOLOR_FROMFACE,
  188.     D3DRMCOLOR_FROMVERTEX
  189. } D3DRMCOLORSOURCE, *LPD3DRMCOLORSOURCE;
  190.  
  191. typedef enum _D3DRMFRAMECONSTRAINT
  192. {   D3DRMCONSTRAIN_Z,           /* use only X and Y rotations */
  193.     D3DRMCONSTRAIN_Y,           /* use only X and Z rotations */
  194.     D3DRMCONSTRAIN_X            /* use only Y and Z rotations */
  195. } D3DRMFRAMECONSTRAINT, *LPD3DRMFRAMECONSTRAINT;
  196.  
  197. typedef enum _D3DRMMATERIALMODE
  198. {   D3DRMMATERIAL_FROMMESH,
  199.     D3DRMMATERIAL_FROMPARENT,
  200.     D3DRMMATERIAL_FROMFRAME
  201. } D3DRMMATERIALMODE, *LPD3DRMMATERIALMODE;
  202.  
  203. typedef enum _D3DRMFOGMODE
  204. {   D3DRMFOG_LINEAR,            /* linear between start and end */
  205.     D3DRMFOG_EXPONENTIAL,       /* density * exp(-distance) */
  206.     D3DRMFOG_EXPONENTIALSQUARED /* density * exp(-distance*distance) */
  207. } D3DRMFOGMODE, *LPD3DRMFOGMODE;
  208.  
  209. typedef enum _D3DRMZBUFFERMODE {
  210.     D3DRMZBUFFER_FROMPARENT,    /* default */
  211.     D3DRMZBUFFER_ENABLE,        /* enable zbuffering */
  212.     D3DRMZBUFFER_DISABLE        /* disable zbuffering */
  213. } D3DRMZBUFFERMODE, *LPD3DRMZBUFFERMODE;
  214.  
  215. typedef enum _D3DRMSORTMODE {
  216.     D3DRMSORT_FROMPARENT,       /* default */
  217.     D3DRMSORT_NONE,             /* don't sort child frames */
  218.     D3DRMSORT_FRONTTOBACK,      /* sort child frames front-to-back */
  219.     D3DRMSORT_BACKTOFRONT       /* sort child frames back-to-front */
  220. } D3DRMSORTMODE, *LPD3DRMSORTMODE;
  221.  
  222. typedef DWORD D3DRMANIMATIONOPTIONS;
  223. #define D3DRMANIMATION_OPEN 0x01L
  224. #define D3DRMANIMATION_CLOSED 0x02L
  225. #define D3DRMANIMATION_L